STANDARDIZED OPEN LADDER OF FUNCTIONAL PROGRAMMING
関数型プログラミングのレベル分け
参考
LambdaConfの元ツイート
https://gyazo.com/ace599efd0339a4fd015a326d9b75ad5
Ladder of Functional Programming 〜関数型プログラミングのレベル分け〜 - Qiita
NOVICE
Immutable Data
Second-Order Functions
Constructing & Destructuring
Haskellの関数合成
First-Class Functions & Lambdas
ADVANCED BEGINNER
代数的データ型
Pattern Matching
パラメトリック多相
再帰
型クラス
Lower-Order Abstractions (Equal, Semigroup型クラス, Monoid型クラス, etc)
参照透過 & 全域関数
高階関数
部分適用, カリー化, point-free style
COMPETENT
GADT
高階型
RankNTypes
畳み込みと展開
Higher-Order Abstractions
Category型クラス, Functor型クラス, Monad型クラス
Basic Optics
Efficient Persistent Data Structures
効率的な永続的データ構造
存在型
コンビネータを用いたEDSL
PROFICIENT
余データ
(Co)Recursion Scheme #??
Advanced Optics #??
Dual Abstractions (Comonad)
双対的な抽象化(Comonad型クラス) #??
モナド変換子
Freeモナド & Extensible Effects
Functional Architecture
HaskellでApplication Architecture
Advanced Functors
Exponential Functor
Profunctor型クラス
Contravariant型クラス
EDSL using GADTs, Tagless final
Advanced Monads
継続モナド、Logicモナド
Type Family、Functional Dependencies
EXPERT
High-Performance
高階多相型
Generic型クラス
型レベルプログラミング
依存型、Singleton Type
圏論
グラフ簡約
Higher-Order Abstract Syntax
関数型言語のためのコンパイラ設計
Profunctor Optics